#ifndef PROCESADOR_H_
#define PROCESADOR_H_

#include "ContenedorDeDefines.h"
#include "IfDefAnidados.h"
#include "FlagsDePrograma.h"
#include "Utilitarias.h"
#include "SeparadoresValidos.h"
#include "Precompilador.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

class Procesador{
private:
	Precompilador precompilador;
	FlagsDePrograma flags;
	ContenedorDeDefines lista;
	IfDefAnidados ifDefAnidados;
	Utilitarias util;

public:
	Procesador() {}
	bool esSeparadorValidoParaLaInstruccion(char* instr, char sep);
	bool parseInstruccion(char* linea, char* instr, int codInstr);
	void procesarInstruccion(char* linea, int codInstr);
	void procesarIfdefOIfndef(char* linea, int codInstr);
	void procesarInclude(char* linea);
	void procesarElse(char* linea);
	void procesarEndif(char* linea);
	void procesarDefine(char* linea);
	char* procesarDirectivaCompilador(char*);
	void procesoLinea(char*);
	void procesarDirectivaOBuscarReemplazos(char*);
	void procesoArchivoEntrada(const char*);
	bool esDirectivaDeCompilador(char* linea);
};
#endif /* PROCESADOR_H_ */
